#ifndef FUNCTIONDECLARATION_H
#define FUNCTIONDECLARATION_H

#endif

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct Student {
	int  sno;
	char sname[10];
	char gender[3];
	char nation[10];
	int  age;
};

struct Node_S {
	Student data;
	Node_S *next;
};

void    menu(Node_S* phead);
Node_S* createList(Node_S* phead, int n);
void    traversal(Node_S*);

//统计
void    menu1(Node_S* phead);
int     countGender(Node_S*);
int     countAge(Node_S*);
int     countNation(Node_S*);
Node_S* AgeCor(Node_S*);
Node_S* NationCor(Node_S*);

//查找
void    menu2(Node_S* phead);


//排序
void    menu3(Node_S* phead);
Node_S* sortSno(Node_S*);
Node_S* sortAge(Node_S*);
Node_S* sortSname(Node_S*);
Node_S* sortNation(Node_S*);

//添加
void    menu4(Node_S* phead);
Node_S* addPhead(Node_S*);
Node_S* addPtail(Node_S*);
Node_S* addAppoint(Node_S*);

//删除
void    menu5(Node_S* phead);


Node_S* Deletephead(Node_S*);
Node_S* Deleteptail(Node_S*);
Node_S* DeleteAppoint(Node_S*);

//查询
//按学号查询学生
void find_student_sno(Node_S *phead);
//按姓名查询学生
void find_student_sname(Node_S *phead);
//按年龄查询学生
void find_student_age(Node_S *phead);

//修改
Node_S* Change(Node_S*);

void    DataSave(Node_S*);
void    Show(Node_S*);
Node_S* Add(Node_S*);


void release(Node_S *phead);     //释放链表
void prompt();
